<?php

/**
 * 数学函数
 */

// 绝对值
echo abs(-100);

// 向上、向下取整
echo ceil(10.2);
echo floor(10.2);

// 最大、最小值
echo max(1, 2, 3);
echo min(1, 2, 3);

// 四舍五入
echo round(10.2);

// 随机数
echo mt_rand(1, 999);

// 应用 - 验证码
function get_random_code($length = 32)
{
    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';

    $result = '';
    $l = strlen($str);

    for ($i = 0; $i < $length; $i++) {
        $result .= $str[mt_rand(1, $l) - 1];
    }
    return $result;
}

echo '<br>';
echo get_random_code();


// 应用 - 分页验证
// $page = max(1, $_GET['page'] ?? 1);
// $total = 100;
// echo min($total, $page);
echo '<br>';

/**
 * 验证值 在最小值与最大值之间
 * @param int $value
 * @param int $min
 * @param int $max
 * @return mixed
 */
function between($value = 0, int $min = 0, int $max = 0)
{
    $item = max($min, $value);
    return min($max, $item);
}

$value = 2;
echo between($value, 1, 100);


// 高精度计算

// 默认小数点位数： 3
bcscale(3);
echo bcdiv('105', '6.55957'); // 16.007

// 不调用 bcscale() 也一样
echo bcdiv('105', '6.55957', 3); // 16.007




